package com.eastfair.questionnaire.service;

import com.eastfair.questionnaire.dto.DisplayLocationQuestionDTO;
import com.eastfair.questionnaire.dto.DisplayLocationQuestionnaireDTO;
import com.eastfair.questionnaire.dto.QuestionDTO;
import com.eastfair.questionnaire.vo.DynamicQuestionnaireVO;
import com.eastfair.questionnaire.vo.QuestionnaireVO;

import java.util.List;
import java.util.Optional;

/**
*Description  定制不同位置的问卷、问题
*@Date 9:49 2021/12/2
*@param null
*@return
*@Author yuwx
**/
public interface DisplayLocationService {
    /**
    *Description 添加位置以及问卷
    *@Date 17:43 2021/12/2
    *@param displayLocation
    *@param questionnaireId
    *@return void
    *@Author yuwx
    **/
    void addDisplayLocationQuestionnaire(String displayLocation, Long questionnaireId);
    /**
    *Description 更新位置的问卷
    *@Date 17:43 2021/12/2
    *@param displayLocationQuestionnaireId
    *@param questionnaireId
    *@return void
    *@Author yuwx
    **/
    void updateDisplayLocationQuestionnaire(Long displayLocationQuestionnaireId, Long questionnaireId);
    /**
    *Description 位置列表
    *@Date 17:44 2021/12/2
    *@param
    *@return java.util.List<com.eastfair.questionnaire.dto.DisplayLocationQuestionnaireDTO>
    *@Author yuwx
    **/
    List<DisplayLocationQuestionnaireDTO> listDisplayLocationQuestionnaire();
    /**
    *Description 获取位置对应的问卷
    *@Date 15:44 2021/12/7
    *@param displayLocation
    *@return void
    *@Author yuwx
    **/
    DynamicQuestionnaireVO getQuestionnaireByDisplayLocation(String displayLocation, String subjectType, Long subjectId);
    /**
    *Description 获取
    *@Date 17:12 2021/12/7
    *@param displayLocation
    *@param subjectType
    *@param subjectId
    *@return com.eastfair.questionnaire.vo.QuestionnaireVO
    *@Author yuwx
    **/
    QuestionnaireVO getOptionByDisplayLocation(String displayLocation, String subjectType, Long subjectId);

    /**
    *Description 位置添加问题
    *@Date 17:44 2021/12/2
    *@param displayLocationQuestionDTO
    *@return void
    *@Author yuwx
    **/
    void addDisplayLocationQuestion(DisplayLocationQuestionDTO displayLocationQuestionDTO);
    /**
    *Description 位置问题配置更新
    *@Date 17:44 2021/12/2
    *@param displayLocationQuestionDTO
    *@return void
    *@Author yuwx
    **/
    void updateDisplayLocationQuestion(DisplayLocationQuestionDTO displayLocationQuestionDTO);
    /**
    *Description 查询包装后的问题列表（问卷下所有问题，如果存在定制，则覆盖问题原有属性）
    *@Date 11:05 2021/12/3
    *@param displayLocationQuestionnaireId
    *@return java.util.List<com.eastfair.questionnaire.dto.DisplayLocationQuestionDTO>
    *@Author yuwx
    **/
    List<DisplayLocationQuestionDTO> listWrapDisplayLocationQuestion(Long displayLocationQuestionnaireId);
    /**
    *Description 查询位置问题列表
    *@Date 17:45 2021/12/2
    *@param displayLocationQuestionnaireId
    *@return java.util.List<com.eastfair.questionnaire.dto.DisplayLocationQuestionDTO>
    *@Author yuwx
    **/
    List<DisplayLocationQuestionDTO> listDisplayLocationQuestion(Long displayLocationQuestionnaireId);
}
